连杆有向包围盒(OBB)开发介绍
修订日期 | 修订版 | 修订内容 | 修订人 |
---|---|---|---|
2023.7.20 | v0.1 | 初始化文档 | 舒瑞 |
1 功能描述
包围盒:OBB包围盒是一个可以根据物体方向和姿态进行旋转的三维边界框,用于完全包围一个三维物体或物体集合,在机械臂自碰撞检测与路径规划中发挥重要作用.
定义:OBB包围盒由三个相互垂直的轴(通常是物体的局部坐标轴),一个中心点和三个方向长度定义.
解决问题:
给定机械臂STL描述文件和各关节角度
- 输出OBB包围盒在局部坐标系下的中心位置,姿态,以及半长、半宽、半高.
- 输出OBB包围盒在基座标系下的中心位置,姿态,以及半长、半宽、半高.
2 接口介绍
/**
* @brief 获得连杆的OBB信息
* @param link_name: 连杆名
* @return 连杆的OBB模型
*/
ARAL_API_COMMON(1.0) OBBPairs mdlGetLinkOBBModel(const std::string& link_name)const = 0;
用户可以动态调用该接口, 通过给定连杆名称,获取连杆OBB模型在局部坐标系下的描述.
/**
* @brief 获得某个构型下的所有连杆OBB模型
* @param q_in: 机器人构型参数(关节角)
* @param real_fk: 基于理论 (false) / 实际 DH(true) 参数
* @return 所有连杆的OBB模型在基坐标系下的描述
*/
ARAL_API_COMMON(1.0) std::vector<OBBPairs> mdlGetLinkOBBModels(const interface::RLJntArray& q_in, const bool real_fk)const = 0;
用户可以动态调用该接口, 通过给定机械臂关节角度,DH参数,获取连杆OBB模型在基座标系下的描述.
3 开发历程
//机械臂型号配置
Setup("aubo_i5");
interface::RLJntArray linkmass_ref {5.05, 11.28, 2.88, 1.62, 1.62, 0.5}; //初始化关节角
//获取连杆OBB模型
auto names = robot->mdlGetLinkName();
for(auto name : names)
robot->mdlGetLinkOBBModel(name);
//获取OBB模型在基座标系下的描述
auto res = robot->mdlGetLinkOBBModels(linkmass_ref, true);
CHECK(res.size() == names.size()-2);
4 包围效果
对aubo-i5机械臂各连杆进行OBB包围操作,包围效果可视化如图1所示.